package com.lill.common.component.util;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.UUID;

/**
 * ID 生成工具类<br>
 *
 * @author lill
 */
public class IdUtil {
    /**
     * 主要功能:生成流水号 yyyyMMddHHmmssSSS + 3位随机数
     * 注意事项:无
     *
     * @return 流水号
     */
    public static String createIdByDate() {
        // 精确到毫秒
        SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        String suffix = fmt.format(new Date());
        suffix = suffix + Math.round((Math.random() * 100000));
        return suffix;
    }

    /**
     * 主要功能:生成uuid
     * 注意事项:无
     *
     * @return uuid 32 位
     */
    public static String createIdbyUUID() {
        return UUID.randomUUID().toString().replaceAll("-", "");
    }

    /**
     * 生成优惠券编号
     * @param message
     * @return
     */
    public static String getNumber(String message){
        String str = message.substring(0,4);
        Long num = Long.parseLong(message.substring(5,message.length()));
        num++;
        int length = (num + "").length();
        String number = "";
        for(int i = 0;i < 10 - length;i++){
            number += "0";
        }
        return str + number + num;
    }
    
    /**
     * 主要功能:生成uuid
     * 注意事项:无
     *
     * @return uuid 16 位
     */
    public static String createIdBy16UUID() {
    	 int machineId = 6;//最大支持1-9个集群机器部署
    	 int hashCodeV = UUID.randomUUID().toString().hashCode();
    	 if(hashCodeV < 0) {//有可能是负数
    		 hashCodeV = - hashCodeV;
    	 }
    	 return machineId + String.format("%015d", hashCodeV);
    }

    public static String getCode(){
        Random rand = new Random();
        String num = "";
        for(int i=0; i<4; i++) {
            num+= rand.nextInt(9) + 1;
        }
        return num;
    }
}
